home *** CD-ROM | disk | FTP | other *** search
- ////////////////////////////////////////////////////////////
- // runtime.cpp Copyright 1994 Gregory Colvin.
- // Free distribution OK with this notice.
- //
- // Runtime library patches to track working papers.
-
- #include "runtime.h"
-
- static new_handler cur_new_handler;
- new_handler set_new_handler(new_handler cur) throw() {
- new_handler old= cur_new_handler;
- cur_new_handler = cur;
- return old;
- }
-
- static void* allocate_loop(size_t n) {
- void* p=0;
- for(;;) {
- p = allocate(n);
- if (p || !cur_new_handler)
- break;
- cur_new_handler();
- }
- return p;
- }
-
- void* operator new(size_t n) throw (bad_alloc) {
- if (n == 0) n++;
- void* p= allocate_loop(n);
- if (!p)
- throw bad_alloc();
- return p;
- }
- void* operator new[](size_t n) throw(bad_alloc) {
- if (n == 0) n++;
- void* p= allocate_loop(n);
- if (!p)
- throw bad_alloc();
- return p;
- }
-
- void operator delete(void* p) throw() {
- deallocate(p);
- }
- void operator delete[](void* p) throw() {
- deallocate(p);
- }
-
-
-